﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MemoLib
{
    public class UtilityConvert
    {
        public static int ParseInt(object pObj, int pDefaultValue)
        {
            if (pObj == null)
            {
                return pDefaultValue;
            }

            int ret = pDefaultValue;

            if (!int.TryParse(pObj.ToString(), out ret))
            {
                ret = pDefaultValue;
            }

            return ret;
        }

        public static Int64 ParseInt64(object pObj, int pDefaultValue)
        {
            if (pObj == null)
            {
                return pDefaultValue;
            }

            Int64 ret = pDefaultValue;

            if (!Int64.TryParse(pObj.ToString(), out ret))
            {
                ret = pDefaultValue;
            }

            return ret;
        }

        public static int? ParseInt(object pObj)
        {
            int? ret;
            if (pObj == null)
            {
                return null;
            }

            int temp = 0;
            if (!int.TryParse(pObj.ToString(), out temp))
            {
                ret = null;
            }
            else
            {
                ret = temp;
            }

            return ret;
        }

        public static decimal ParseDecimal(object pObj, decimal pDefaultValue)
        {
            if (pObj == null)
            {
                return pDefaultValue;
            }

            decimal ret = pDefaultValue;

            if (!decimal.TryParse(pObj.ToString(), out ret))
            {
                ret = pDefaultValue;
            }

            return ret;
        }

        public static DateTime? ParseDateTime(object pObj)
        {
            DateTime? ret;

            if (pObj == null)
            {
                return null;
            }

            DateTime dt;
            if (!DateTime.TryParse(pObj.ToString(), out dt))
            {
                ret = null;
            }
            else
            {
                ret = dt;
            }

            return ret;

        }

        public static DateTime ParseDateTime(object pObj, DateTime pDefaultValue)
        {
            if (pObj == null)
            {
                return pDefaultValue;
            }

            DateTime ret = pDefaultValue;

            if (!DateTime.TryParse(pObj.ToString(), out ret))
            {
                ret = pDefaultValue;
            }

            return ret;

        }

        public static bool ParseBool(object pObj, bool pDefaultValue)
        {
            if (pObj == null) return pDefaultValue;
            bool ret = false;
            if (pObj == DBNull.Value || pObj == null)
                ret = pDefaultValue;
            else
            {
                bool temp = false;
                if (!bool.TryParse(Convert.ToString(pObj), out temp))
                    ret = pDefaultValue;
                else
                    ret = temp;
            }

            return ret;
        }

        /// <summary>
        /// 将Object类型的值转化为字符串,null转为空字符串
        /// </summary>
        /// <param name="obj">Object类型的值</param>
        /// <returns></returns>
        public static string ConvertToString(object obj)
        {
            string val = string.Empty;

            if (obj != null && !object.Equals(obj, null))
                val = obj.ToString();

            return val;
        }
    }
}
